﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Valentia.Kinection.DataTypes;

namespace Valentia.Kinection.Remoting.Proxy
{
    public interface IRemotingServerObject
    {
        #region Events

        /// <summary>
        /// This event will be fired when server needs to send information of devices connected to service.
        /// </summary>
        event DeviceConnectivityInfo KinectDeviceInfoReceived;

        /// <summary>
        /// This event will be fired when server needs to send information of client connected to service.
        /// </summary>
        event ClientConnectivityInfo ServiceClientInfoReceived;

        /// <summary>
        /// This event will be fired when server needs to send information of service client and device connectivity status.
        /// </summary>
        event ConnectionStatus ConnectionStatusInfoReceived;

        /// <summary>
        /// This event will be fired when server needs to show notification on service manager utility.
        /// </summary>
        event EventHandler<NotificationReceivedArgs> ShowNotificationReceived; 

        #endregion

        #region Methods

        /// <summary>
        /// This method will be used to send command from client to server
        /// </summary>
        /// <param name="command">Command</param>
        String CommandFromClient(ClientCommands command, String loginName, String password);

        /// <summary>
        /// This method will be used to determine client and server connection is alive
        /// </summary>
        /// <returns>Server will return true</returns>
        bool IsConnectionAlive();

        #endregion
    }
}
